Many portable devices use a display for presenting information to the user. Some devices have a touch-enabled display for not only presenting information but receiving user input. A GUI (graphical user interface) may have movable elements whose content and/or position change over time. The “smoothness” and “responsiveness” impressions of a GUI as human perception may depend on the frame rate and refresh rate of the device. The “responsiveness” impression of a GUI may further depend on correlation between touch position and GUI content, such as for motional touch inputs like “dragging” or “flicking” gestures.
The frame rate may refer to the frequency at which the device produces (renders) successive instances of an image, referred to as frames. The frame rate may therefore be given in terms of frames per second (fps) or hertz (Hz, or cycles per second). The refresh rate, on the other hand, may refer to the frequency at which a display may draw the produced image, which may be given in terms of Hz.
Many mobile devices use an internal frame buffer in order to lower the power consumption. This type of device may produce (render) a frame of an image in the frame buffer, which may occur in horizontal lines from the top to the bottom of the image. The content of the frame buffer may be continuously transferred to a display, which may similarly occur in horizontal lines from the top to the bottom of the image. The refresh rate may refer to the rate at which the device may transfer the content of the frame buffer to the display, and hence the rate at which the display may present the content. In parallel, the device may produce the next frame of the image in the frame buffer. The frame rate may refer to the rate at which the device produces frames of the image in the frame buffer.
Image tearing is a well-known problem in displaying computer-generated animations, which may occur when the production of frames of an image in the frame buffer overtakes the transfer from the frame buffer to the display or vice versa. Here, the device produces in the frame buffer a part of the image that has not yet been refreshed on the display. The display then includes a portion of the image of one frame at the top of the display, and a portion of the image of the next frame at the bottom of the display. When the content of the two frames are different, the result is a torn image, which may appear as flickering to a user. Image tearing may be avoided in any of a number of different manners, such as by means of a synchronization signal (or tearing enable (TE) signal) that may prevent the device from producing the next frame of an image in the frame buffer until after the display has been refreshed with the current frame of the image in the frame buffer. The synchronization signal may therefore serve to synchronize or otherwise align the frame and refresh rates. Additional judder may be perceived, however, when the frame rate is lower than the display refresh rate.
The processing power of many portable devices may be limited. This limitation may affect the frame rate capability of the devices, resulting in a lower nominal frame rate than otherwise may be achievable by a less limited device. And for movable GUI elements, this may result in a clearly visible and undesirable displacement between the touched position and the displayed GUI element whenever these elements are moved with at least a particular speed.
The multitasking nature of many devices also may make it difficult to always have the requisite processing power available to achieve the device's nominal frame rate. This dynamic processor load may lead to an effective frame rate lower than the device's nominal frame rate such that the average effective GUI frame rate as generated by the graphics engine may be some rational factor (/2 . . . /8) below the refresh rate of the display (e.g., 60 Hz). The delayed rendering of a frame of GUI content may result in lower effective frame rate relative to when the display's refresh rate makes it ready to present the frame.
The aforementioned characteristics may result in a violation in the position and time relationship (motion) for movable GUI elements, when it is finally shown on the display. It may also result in a visible spatial displacement for movable GUI elements when they finally appear on the display. Additional judder may also occur, which may be clearly visible for horizontal and/or vertical moving GUI elements.